/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jsf;

import br.data.model.Admin;
import br.data.model.Clientes;
import br.data.model.Fornecedores;
import java.awt.event.ActionEvent;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;

/**
 *
 * @author WStrafacce
 */
@ManagedBean
@SessionScoped
public class RFacesUsers {

    private br.data.model.Clientes cli;
    private br.data.model.Fornecedores forn;
    private br.data.model.Admin admin;
    private String login;
    private String senha;

    /** Creates a new instance of RFacesUsers */
    public RFacesUsers() {
    }
    
    public Admin getAdmin() {
        return admin;
    }

    public void setAdmin(Admin admin) {
        this.admin = admin;
    }
    public RFacesUsers(String login, String senha) {
        this.login = login;
        this.senha = senha;
    }

    public Clientes getCli() {
        return cli;
    }

    public void setCli(Clientes cli) {
        this.cli = cli;
    }

    public Fornecedores getForn() {
        return forn;
    }

    public void setForn(Fornecedores forn) {
        this.forn = forn;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String logout() {
        cli = new br.data.model.Clientes();
        forn = new br.data.model.Fornecedores();
        admin = new br.data.model.Admin();
        login = "";
        senha = "";
        return "index.xhtml";
    }

    public String login(ActionEvent actionEvent) {
        FacesContext context = FacesContext.getCurrentInstance();
        FacesMessage msg = null;
        boolean loggedIn = false;
        String retorno = "";
        try {
            if (login != null && senha != null) {
                if ((cli = new br.data.crud.CrudClientes().getCliente(login, senha)) != null) {
                    if (cli.getStatus()) {
                        loggedIn = true;
                        context.addMessage(null, new FacesMessage("Logado com Sucesso", "Bem vindo: " + login));
                        retorno = "cliente_index.xhtml";
                    } else {
                        loggedIn = true;
                        context.addMessage(null, new FacesMessage("Logado com Sucesso", "Aguarde contato do Administrador"));
                        retorno = "aguardando_liberacao.xhtml";
                    }
                } else if ((forn = new br.data.crud.CrudFornecedores().getFornecedor(login, senha)) != null) {
                    loggedIn = true;
                    context.addMessage(null, new FacesMessage("Logado com Sucesso", "Bem vindo: " + login));
                    retorno = "fornecedor_index.xhtml";
                } else if ((admin = new br.data.crud.CrudAdministrador().getAdministrador(login, senha)) != null) {
                    loggedIn = true;
                    context.addMessage(null, new FacesMessage("Logado com Sucesso", "Bem vindo: " + login));
                    retorno = "administrador_index.xhtml";
                }
            } else {
                loggedIn = false;
                context.addMessage(null, new FacesMessage("Login Error", "Invalid credentials"));
                retorno = "index.xhtml";
            }
            return retorno;
        } catch (Exception e) {
            return retorno;
        }
    }

    public Object getObject() {
        if (!(cli == null)) {
            return cli;
        } else if (!(forn == null)) {
            return forn;
        }else if (!(admin == null)){
            return admin;
        }else{
            return null;
        }
    }
}
